home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / ntp_open.nasl < prev    next >
Text File  |  2005-03-31  |  3KB  |  128 lines

  1. #
  2. # This script was written by David Lodge
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6. # Changes by rd:
  7. # - recv() only receives the first two bytes of data (instead of 1024)
  8. # - replaced ord(result[0]) == 0x1E by ord(result[0]) & 0x1E (binary AND)
  9.  
  10. if(description)
  11. {
  12.  script_id(10884);
  13.  script_version("$Revision: 1.10 $");
  14.  name["english"] = "NTP read variables";
  15.  script_name(english:name["english"]);
  16.  
  17.  desc["english"] = "
  18. A NTP (Network Time Protocol) server is listening on this port.
  19.  
  20. Risk factor : Low";
  21.  
  22.  script_description(english:desc["english"]);
  23.  
  24.  summary["english"] = "NTP allows query of variables";
  25.  script_summary(english:summary["english"]);
  26.  
  27.  script_category(ACT_GATHER_INFO);
  28.  
  29.  script_copyright(english:"This script is Copyright (C) 2002 David Lodge");
  30.  family["english"] = "General";
  31.  script_family(english:family["english"]);
  32.  
  33.  exit(0);
  34. }
  35.  
  36. #
  37. # The script code starts here
  38. #
  39. #
  40.  
  41. function ntp_read_list()
  42. {
  43.     data = raw_string(0x16, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00);
  44.     soc = open_sock_udp(123);
  45.     send(socket:soc, data:data);
  46.     r = recv(socket:soc, length:4096);
  47.     close(soc);
  48.  
  49.     if (! r) return(NULL);
  50.  
  51.     p = strstr(r, "version=");
  52.     if (! p) p = strstr(r, "processor=");
  53.     if (! p) p = strstr(r, "system=");
  54.     p = ereg_replace(string:p, pattern:raw_string(0x22), replace:"'");
  55.  
  56.     if (p) return(p);
  57.     return(NULL);
  58. }
  59.  
  60.  
  61. function ntp_installed()
  62. {
  63. data = raw_string(0xDB, 0x00, 0x04, 0xFA, 0x00, 0x01,
  64.               0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
  65.           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  66.           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  67.           0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  68.           0x00, 0x00, 0xBE, 0x78, 0x2F, 0x1D, 0x19, 0xBA,
  69.           0x00, 0x00);
  70.  
  71. soc = open_sock_udp(123);
  72. send(socket:soc, data:data);
  73. r = recv(socket:soc, length:4096);
  74. close(soc);
  75.  
  76. if(strlen(r) > 10)
  77.  {
  78.  return(r);
  79.  }
  80. return(NULL);
  81. }
  82.  
  83.  
  84.  
  85. # find out whether we can open the port
  86.  
  87. if( !(get_udp_port_state(123)) ) exit(0);
  88.  
  89.  
  90.  
  91. r = ntp_installed();
  92. if(r)
  93.    {
  94.       list = ntp_read_list();
  95.       if(!list)security_note(port:123, protocol:"udp");
  96.       else
  97.        {
  98.        if ("system" >< list )
  99.         {
  100.          s = egrep(pattern:"system=", string:list);
  101.      os = ereg_replace(string:s, pattern:".*system='([^']*)'.*", replace:"\1");
  102.          set_kb_item(name:"Host/OS/ntp", value:os);
  103.         }
  104.        if ("processor" >< list )
  105.         {
  106.          s = egrep(pattern:"processor=", string:list);
  107.      os = ereg_replace(string:s, pattern:".*processor='([^']*)'.*", replace:"\1");
  108.          set_kb_item(name:"Host/processor/ntp", value:os);
  109.         }
  110.       report = "It is possible to determine a lot of information about the remote host 
  111. by querying the NTP (Network Time Protocol) variables - these include 
  112. OS descriptor, and time settings.
  113.  
  114. It was possible to gather the following information from the remote NTP host : 
  115.  
  116. " + list + "
  117.  
  118.  
  119. Quickfix: Set NTP to restrict default access to ignore all info packets:
  120.     restrict default ignore
  121.  
  122. Risk factor : Low";
  123.       security_note(port:123, protocol:"udp", data:report);
  124.     }
  125.   }
  126.  
  127.  
  128.